; 
; . 
;  . 
;   . 
;   . 
;   . 
; ., . 
; saes@mail.ru 
; 
;  = BUDIK.ASM 
; : 23.02.03. 
;   : MPLAB IDE, : 5.61.00. 
; 
            #INCLUDE P16F84A.INC 
            __CONFIG 3FF0H 
;====================================== 
;    32,768 K. 
;====================================== 
; . . 
;================ 
INDF     EQU  00H  ;    FSR. 
TIMER0   EQU  01H  ;TMR0. 
OPTIONR  EQU  81H  ;OPTION (RP0=1). 
PC       EQU  02H  ; . 
STATUS   EQU  03H  ;  . 
FSR      EQU  04H  ;  . 
PORTA    EQU  05H  ;  /. 
PORTB    EQU  06H  ;  /. 
TRISA    EQU  85H  ;   . 
TRISB    EQU  86H  ;   . 
INTCON   EQU  0BH  ;  . 
;============================================= 
;  . 
;============================================= 
; RB0 >  . 
; RA0 >   (1). 
; RA1 >   (0). 
; RA2 >  1   1 . 
;============================================ 
;     FLAG. 
;============================================ 
FLAG     EQU  10H    
; 
;     0->  . 
;     2-> 2 . 
;================================== 
;   . 
;==================================  
SEC1     EQU  1AH  ; . 
MIN1     EQU  1BH  ; . 
HOU1     EQU  1CH  ; . 
HWK      EQU  1DH  ;   . 
MWK      EQU  1EH  ;   . 
;==================== 
;  . 
;==================== 
W_TEMP      EQU  20H ;   W  . 
STATUS_TEMP EQU  21H ;   STATUS  . 
FSR_TEMP    EQU  22H ;  FSR. 
;===================== 
; 1. . 
;===================== 
        ORG 0 
           GOTO INIT  
        ORG 4 
           GOTO CONST 
;================== 
; 2. . 
;================== 
INIT 
 BSF   STATUS,RP0      ;   1. 
 MOVLW B'00000100'     ;  , =32 =...100. 
 MOVWF OPTION_REG^80H  ; 
 MOVLW B'10100000'     ;    TMR0. 
 MOVWF INTCON          ; 
 MOVLW B'00000000'     ;  . 
 MOVWF TRISA^80H 
 MOVLW B'00000001'     ;RB0- ,  - . 
 MOVWF TRISB^80H 
 BCF   STATUS,RP0      ;   0.  
 CLRF  FLAG            ;  . 
 CLRF  TMR0            ;   . 
 CLRF  HWK 
 CLRF  MWK 
 CLRF  SEC1 
 CLRF  MIN1 
 CLRF  HOU1 
 CLRF  PORTB 
 CLRF  PORTA 
 BSF   PORTA,0 
 GOTO  COMP         ; . 
;============================ 
; 3.   . 
;============================ 
KEY 
         BTFSS  PORTB,0    ;  , 
         BSF    FLAG,0     ; . 
         BCF    FLAG,2     ;  2 . 
         BTFSS  PORTB,0    ;  ,  . 
         RETURN 
         BTFSC  FLAG,0     ;  , 
         CALL   UST        ;  . 
         RETURN            ;. 
;================================ 
; 4. . 
;================================ 
UST 
        BCF     FLAG,0  ;  . 
        MOVFW   HOU1    ;  
        MOVWF   HWK     ;   . 
        MOVFW   MIN1    ;  
        MOVWF   MWK     ;   . 
        RETURN 
;================================ 
; 5.   . 
;================================ 
COMP 
        MOVFW   HOU1   ;   
        SUBWF   HWK,0  ;   . 
        BNZ     COM    ;   , . 
        MOVFW   MIN1   ;   
        SUBWF   MWK,0  ;   . 
        BZ      COMW   ;  ,  . 
COM 
        BCF     PORTA,0 ; . 
        BSF     PORTA,1 ;. 
        GOTO    COMP    ; . 
COMW 
        BSF     PORTA,0 ; . 
        BCF     PORTA,1 ;. 
        BTFSC   SEC1,0  ;  , 
        GOTO    COMP    ;  . 
COMW0 
        BTFSC   SEC1,0  ;    , 
        GOTO    COMP    ;  . 
        BCF     PORTA,2 ; . 
        NOP             ;  
        NOP             ; 
        NOP             ;  . 
        NOP             ;  1,22  = 0,8 . 
        BSF     PORTA,2 ; . 
        GOTO    COMW0   ;. 
;================================================================== 
; 6.       . 
;=================================================================== 
CONST 
        MOVWF  W_TEMP      ;   W  
        MOVFW  STATUS      ;STATUS, 
        MOVWF  STATUS_TEMP ; 
        MOVFW  FSR         ;FSR. 
        MOVWF  FSR_TEMP    ; 
        CALL   S1          ; 1  . 
        BTFSC  FLAG,2 
        CALL   KEY         ; . 
RECONST                    ;  . 
        BCF    INTCON,2    ;  . 
        MOVFW  STATUS_TEMP ; : 
        MOVWF  STATUS      ;STATUS, 
        MOVFW  FSR_TEMP    ; 
        MOVWF  FSR         ;FSR, 
        MOVFW  W_TEMP      ;W. 
        RETFIE             ;  . 
;================== 
; 7. . 
;================= 
S1 
        MOVFW  SEC1     ;  . . 
        ADDLW  -3BH     ;   59. 
        BZ     M1       ;  0,   ,   M1. 
        INCF   SEC1,1   ; 1  . 
        BTFSC  SEC1,1   ;  , 
        BSF    FLAG,2   ;  2 . 
        RETURN          ; 
M1 
        CLRF   SEC1     ;  . 
M1M 
        MOVFW  MIN1     ;   . . 
        ADDLW  -3BH     ;-59. 
        BZ     H1       ;  0,  ,   H1. 
        INCF   MIN1,F   ; 1  . 
        RETURN          ; 
H1 
        CLRF   MIN1     ;   . 
H1H 
        MOVFW  HOU1     ;   . . 
        ADDLW  -17H     ;- 23.  
        BZ     H10      ;  0,  ,   H10. 
        INCF   HOU1,F   ; 1  . 
        RETURN 
H10 
        CLRF   HOU1     ;  . 
        RETURN 
;============================================== 
        END 